@@ -64,23 +64,12 @@ def shot_create(request, administrator):  | 
            ||
| 64 | 64 | 
                     model_id = request.POST.get('model_id', '')
               | 
            
| 65 | 65 | 
                     model_name = request.POST.get('model_name', '')
               | 
            
| 66 | 66 | 
                     sn = request.POST.get('sn', '')
               | 
            
| 67 | 
                -    front_cap_status = request.POST.get('front_cap_status', 1)
               | 
            |
| 68 | 
                -    rear_cap_status = request.POST.get('rear_cap_status', 1)
               | 
            |
| 69 | 
                -    lens_hood_status = request.POST.get('lens_hood_status', 1)
               | 
            |
| 70 | 
                -    tripod_ring_status = request.POST.get('tripod_ring_status', 1)
               | 
            |
| 71 | 
                -    appearance_performance_status = request.POST.get('appearance_performance_status', 1)
               | 
            |
| 72 | 67 | 
                     tenancy_status = request.POST.get('tenancy_status', 0)
               | 
            
| 73 | 68 | 
                 | 
            
| 74 | 69 | 
                shot = TenancyShotInfo.objects.create(  | 
            
| 75 | 70 | 
                model_id=model_id,  | 
            
| 76 | 71 | 
                model_name=model_name,  | 
            
| 77 | 72 | 
                sn=sn,  | 
            
| 78 | 
                - front_cap_status=front_cap_status,  | 
            |
| 79 | 
                - rear_cap_status=rear_cap_status,  | 
            |
| 80 | 
                - lens_hood_status=lens_hood_status,  | 
            |
| 81 | 
                - tripod_ring_status=tripod_ring_status,  | 
            |
| 82 | 
                - appearance_performance_status=appearance_performance_status,  | 
            |
| 83 | 
                - tenancy_status=tenancy_status,  | 
            |
| 84 | 73 | 
                )  | 
            
| 85 | 74 | 
                 | 
            
| 86 | 75 | 
                     return response(data={
               | 
            
                @@ -95,22 +84,12 @@ def shot_update(request, administrator):  | 
            ||
| 95 | 84 | 
                     model_id = request.POST.get('model_id', '')
               | 
            
| 96 | 85 | 
                     model_name = request.POST.get('model_name', '')
               | 
            
| 97 | 86 | 
                     sn = request.POST.get('sn', '')
               | 
            
| 98 | 
                -    front_cap_status = request.POST.get('front_cap_status', 1)
               | 
            |
| 99 | 
                -    rear_cap_status = request.POST.get('rear_cap_status', 1)
               | 
            |
| 100 | 
                -    lens_hood_status = request.POST.get('lens_hood_status', 1)
               | 
            |
| 101 | 
                -    tripod_ring_status = request.POST.get('tripod_ring_status', 1)
               | 
            |
| 102 | 
                -    appearance_performance_status = request.POST.get('appearance_performance_status', 1)
               | 
            |
| 103 | 87 | 
                     tenancy_status = request.POST.get('tenancy_status', 0)
               | 
            
| 104 | 88 | 
                 | 
            
| 105 | 89 | 
                     shot, _ = TenancyShotInfo.objects.update_or_create(shot_id=shot_id, defaults={
               | 
            
| 106 | 90 | 
                'model_id': model_id,  | 
            
| 107 | 91 | 
                'model_name': model_name,  | 
            
| 108 | 92 | 
                'sn': sn,  | 
            
| 109 | 
                - 'front_cap_status': front_cap_status,  | 
            |
| 110 | 
                - 'rear_cap_status': rear_cap_status,  | 
            |
| 111 | 
                - 'lens_hood_status': lens_hood_status,  | 
            |
| 112 | 
                - 'tripod_ring_status': tripod_ring_status,  | 
            |
| 113 | 
                - 'appearance_performance_status': appearance_performance_status,  | 
            |
| 114 | 93 | 
                'tenancy_status': tenancy_status,  | 
            
| 115 | 94 | 
                })  | 
            
| 116 | 95 | 
                 | 
            
                @@ -132,7 +111,9 @@ def shot_request_list(request, administrator):  | 
            ||
| 132 | 111 | 
                     reqs = TenancyShotRequestInfo.objects.filter(status=True).order_by('-pk')
               | 
            
| 133 | 112 | 
                 | 
            
| 134 | 113 | 
                if query:  | 
            
| 135 | 
                - reqs = reqs.filter(Q(phone__icontains=query) | Q(name__icontains=query))  | 
            |
| 114 | 
                +        shots = list(TenancyShotInfo.objects.values_list('model_id', flat=True).filter(sn__icontains=query))
               | 
            |
| 115 | 
                + reqs = reqs.filter(Q(phone__icontains=query) | Q(name__icontains=query) | Q(shot_id__in=shots))  | 
            |
| 116 | 
                +  | 
            |
| 136 | 117 | 
                 | 
            
| 137 | 118 | 
                if request_status != 'all':  | 
            
| 138 | 119 | 
                reqs = reqs.filter(request_status=request_status)  | 
            
                @@ -264,17 +245,34 @@ def shot_request_send(request, administrator):  | 
            ||
| 264 | 245 | 
                     express_name = request.POST.get('express_name', '')
               | 
            
| 265 | 246 | 
                     express_com = request.POST.get('express_com', '')
               | 
            
| 266 | 247 | 
                     tracking_number = request.POST.get('tracking_number', '')
               | 
            
| 248 | 
                +    shot_id = request.POST.get('shot_id', '')
               | 
            |
| 249 | 
                +    front_cap_status = request.POST.get('front_cap_status', 0)
               | 
            |
| 250 | 
                +    rear_cap_status = request.POST.get('rear_cap_status', 0)
               | 
            |
| 251 | 
                +    lens_hood_status = request.POST.get('lens_hood_status', 0)
               | 
            |
| 252 | 
                +    tripod_ring_status = request.POST.get('tripod_ring_status', 0)
               | 
            |
| 253 | 
                +    appearance_performance_status = request.POST.get('appearance_performance_status', 0)
               | 
            |
| 267 | 254 | 
                 | 
            
| 268 | 255 | 
                try:  | 
            
| 269 | 256 | 
                req = TenancyShotRequestInfo.objects.select_for_update().get(request_id=req_id, status=True)  | 
            
| 270 | 257 | 
                except TenancyShotRequestInfo.DoesNotExist:  | 
            
| 271 | 258 | 
                return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND)  | 
            
| 259 | 
                +  | 
            |
| 260 | 
                + try:  | 
            |
| 261 | 
                + shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True)  | 
            |
| 262 | 
                + except TenancyShotInfo.DoesNotExist:  | 
            |
| 263 | 
                + return response()  | 
            |
| 272 | 264 | 
                 | 
            
| 273 | 265 | 
                old_tracking_number = req.tracking_number  | 
            
| 274 | 266 | 
                 | 
            
| 275 | 267 | 
                req.express_name = express_name  | 
            
| 276 | 268 | 
                req.express_com = express_com  | 
            
| 277 | 269 | 
                req.tracking_number = tracking_number  | 
            
| 270 | 
                + req.shot_id = shot_id  | 
            |
| 271 | 
                + req.front_cap_status = front_cap_status  | 
            |
| 272 | 
                + req.rear_cap_status = rear_cap_status  | 
            |
| 273 | 
                + req.lens_hood_status = lens_hood_status  | 
            |
| 274 | 
                + req.tripod_ring_status = tripod_ring_status  | 
            |
| 275 | 
                + req.appearance_performance_status = appearance_performance_status  | 
            |
| 278 | 276 | 
                req.request_status = TenancyShotRequestInfo.TENANCY_TRACKING_SEND  | 
            
| 279 | 277 | 
                request_status_at = req.request_status_at  | 
            
| 280 | 278 | 
                request_status_at[TenancyShotRequestInfo.TENANCY_TRACKING_SEND] = tc.utc_string()  | 
            
                @@ -14,22 +14,20 @@ from paginator import pagination  | 
            ||
| 14 | 14 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 15 | 15 | 
                 | 
            
| 16 | 16 | 
                from tenancy.models import TenancyShotInfo, TenancyShotRequestInfo  | 
            
| 17 | 
                +from mch.models import ModelInfo  | 
            |
| 17 | 18 | 
                from utils.error.errno_utils import TenancyStatusCode  | 
            
| 18 | 19 | 
                from utils.kuaidi.subscribe import KuaiDi100 as KuaiDi100Subscribe  | 
            
| 19 | 20 | 
                 | 
            
| 20 | 21 | 
                 | 
            
| 21 | 22 | 
                @logit  | 
            
| 22 | 23 | 
                def shot_list(request):  | 
            
| 23 | 
                -    page = request.POST.get('page', 1)
               | 
            |
| 24 | 
                -    num = request.POST.get('num', 20)
               | 
            |
| 25 | 
                -  | 
            |
| 26 | 
                -    shots = TenancyShotInfo.objects.filter(tenancy_status=0, status=True).order_by('-pk')
               | 
            |
| 27 | 
                - shots = [shot.data for shot in shots]  | 
            |
| 28 | 
                - shots, left = pagination(shots, page, num)  | 
            |
| 24 | 
                +    shots = TenancyShotInfo.objects.values('model_id').filter(tenancy_status=0, status=True).order_by('model_id')
               | 
            |
| 25 | 
                + shots = [shot['model_id'] for shot in shots]  | 
            |
| 26 | 
                + shots = ModelInfo.objects.filter(model_id__in=shots)  | 
            |
| 27 | 
                + shots = [shot.admindata for shot in shots]  | 
            |
| 29 | 28 | 
                 | 
            
| 30 | 29 | 
                     return response(data={
               | 
            
| 31 | 30 | 
                'shots': shots,  | 
            
| 32 | 
                - 'left': left,  | 
            |
| 33 | 31 | 
                })  | 
            
| 34 | 32 | 
                 | 
            
| 35 | 33 | 
                 | 
            
                @@ -49,7 +47,7 @@ def shot_detail(request):  | 
            ||
| 49 | 47 | 
                 | 
            
| 50 | 48 | 
                @logit  | 
            
| 51 | 49 | 
                def shot_request_create(request):  | 
            
| 52 | 
                -    shot_id = request.POST.get('shot_id', '')
               | 
            |
| 50 | 
                +    model_id = request.POST.get('model_id', '')
               | 
            |
| 53 | 51 | 
                     user_id = request.POST.get('user_id', '')
               | 
            
| 54 | 52 | 
                     name = request.POST.get('name', '')
               | 
            
| 55 | 53 | 
                     phone = request.POST.get('phone', '')
               | 
            
                @@ -59,7 +57,7 @@ def shot_request_create(request):  | 
            ||
| 59 | 57 | 
                     return_date = tc.to_date(request.POST.get('return_date', '') or settings.DEFAULT_START_DATE)
               | 
            
| 60 | 58 | 
                 | 
            
| 61 | 59 | 
                req = TenancyShotRequestInfo.objects.create(  | 
            
| 62 | 
                - shot_id=shot_id,  | 
            |
| 60 | 
                + model_id=model_id,  | 
            |
| 63 | 61 | 
                user_id=user_id,  | 
            
| 64 | 62 | 
                name=name,  | 
            
| 65 | 63 | 
                phone=phone,  | 
            
                @@ -0,0 +1,74 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 3.2.16 on 2022-11-15 10:36  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import migrations, models  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('tenancy', '0003_auto_20221108_2326'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.AddField(  | 
            |
| 15 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 16 | 
                + name='admin_id',  | 
            |
| 17 | 
                + field=models.CharField(blank=True, db_index=True, help_text='经手人唯一标识', max_length=32, null=True, verbose_name='admin_id'),  | 
            |
| 18 | 
                + ),  | 
            |
| 19 | 
                + migrations.AddField(  | 
            |
| 20 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 21 | 
                + name='appearance_performance_status',  | 
            |
| 22 | 
                + field=models.BooleanField(default=False, help_text='外观性能状态', verbose_name='appearance_performance_status'),  | 
            |
| 23 | 
                + ),  | 
            |
| 24 | 
                + migrations.AddField(  | 
            |
| 25 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 26 | 
                + name='front_cap_status',  | 
            |
| 27 | 
                + field=models.BooleanField(default=False, help_text='前盖状态', verbose_name='front_cap_status'),  | 
            |
| 28 | 
                + ),  | 
            |
| 29 | 
                + migrations.AddField(  | 
            |
| 30 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 31 | 
                + name='lens_hood_status',  | 
            |
| 32 | 
                + field=models.BooleanField(default=False, help_text='遮光罩状态', verbose_name='lens_hood_status'),  | 
            |
| 33 | 
                + ),  | 
            |
| 34 | 
                + migrations.AddField(  | 
            |
| 35 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 36 | 
                + name='model_id',  | 
            |
| 37 | 
                + field=models.CharField(blank=True, db_index=True, help_text='镜头型号唯一标识', max_length=32, null=True, verbose_name='model_id'),  | 
            |
| 38 | 
                + ),  | 
            |
| 39 | 
                + migrations.AddField(  | 
            |
| 40 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 41 | 
                + name='rear_cap_status',  | 
            |
| 42 | 
                + field=models.BooleanField(default=False, help_text='后盖状态', verbose_name='rear_cap_status'),  | 
            |
| 43 | 
                + ),  | 
            |
| 44 | 
                + migrations.AddField(  | 
            |
| 45 | 
                + model_name='tenancyshotrequestinfo',  | 
            |
| 46 | 
                + name='tripod_ring_status',  | 
            |
| 47 | 
                + field=models.BooleanField(default=False, help_text='脚架环状态', verbose_name='tripod_ring_status'),  | 
            |
| 48 | 
                + ),  | 
            |
| 49 | 
                + migrations.AlterField(  | 
            |
| 50 | 
                + model_name='tenancyshotinfo',  | 
            |
| 51 | 
                + name='appearance_performance_status',  | 
            |
| 52 | 
                + field=models.BooleanField(default=False, help_text='外观性能状态', verbose_name='appearance_performance_status'),  | 
            |
| 53 | 
                + ),  | 
            |
| 54 | 
                + migrations.AlterField(  | 
            |
| 55 | 
                + model_name='tenancyshotinfo',  | 
            |
| 56 | 
                + name='front_cap_status',  | 
            |
| 57 | 
                + field=models.BooleanField(default=False, help_text='前盖状态', verbose_name='front_cap_status'),  | 
            |
| 58 | 
                + ),  | 
            |
| 59 | 
                + migrations.AlterField(  | 
            |
| 60 | 
                + model_name='tenancyshotinfo',  | 
            |
| 61 | 
                + name='lens_hood_status',  | 
            |
| 62 | 
                + field=models.BooleanField(default=False, help_text='遮光罩状态', verbose_name='lens_hood_status'),  | 
            |
| 63 | 
                + ),  | 
            |
| 64 | 
                + migrations.AlterField(  | 
            |
| 65 | 
                + model_name='tenancyshotinfo',  | 
            |
| 66 | 
                + name='rear_cap_status',  | 
            |
| 67 | 
                + field=models.BooleanField(default=False, help_text='后盖状态', verbose_name='rear_cap_status'),  | 
            |
| 68 | 
                + ),  | 
            |
| 69 | 
                + migrations.AlterField(  | 
            |
| 70 | 
                + model_name='tenancyshotinfo',  | 
            |
| 71 | 
                + name='tripod_ring_status',  | 
            |
| 72 | 
                + field=models.BooleanField(default=False, help_text='脚架环状态', verbose_name='tripod_ring_status'),  | 
            |
| 73 | 
                + ),  | 
            |
| 74 | 
                + ]  | 
            
                @@ -7,7 +7,7 @@ from jsonfield import JSONField  | 
            ||
| 7 | 7 | 
                from shortuuidfield import ShortUUIDField  | 
            
| 8 | 8 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 9 | 9 | 
                 | 
            
| 10 | 
                -from mch.models import ModelInfo  | 
            |
| 10 | 
                +from mch.models import ModelInfo, AdministratorInfo  | 
            |
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                 | 
            
| 13 | 13 | 
                class TenancyShotInfo(BaseModelMixin):  | 
            
                @@ -20,11 +20,11 @@ class TenancyShotInfo(BaseModelMixin):  | 
            ||
| 20 | 20 | 
                model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)  | 
            
| 21 | 21 | 
                model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')  | 
            
| 22 | 22 | 
                sn = models.CharField(_(u'sn'), max_length=32, blank=True, null=True, help_text=u'序列号', db_index=True)  | 
            
| 23 | 
                - front_cap_status = models.BooleanField(_(u'front_cap_status'), default=True, help_text=u'前盖状态')  | 
            |
| 24 | 
                - rear_cap_status = models.BooleanField(_(u'rear_cap_status'), default=True, help_text=u'后盖状态')  | 
            |
| 25 | 
                - lens_hood_status = models.BooleanField(_(u'lens_hood_status'), default=True, help_text=u'遮光罩状态')  | 
            |
| 26 | 
                - tripod_ring_status = models.BooleanField(_(u'tripod_ring_status'), default=True, help_text=u'脚架环状态')  | 
            |
| 27 | 
                - appearance_performance_status = models.BooleanField(_(u'appearance_performance_status'), default=True, help_text=u'外观性能状态')  | 
            |
| 23 | 
                + front_cap_status = models.BooleanField(_(u'front_cap_status'), default=False, help_text=u'前盖状态')  | 
            |
| 24 | 
                + rear_cap_status = models.BooleanField(_(u'rear_cap_status'), default=False, help_text=u'后盖状态')  | 
            |
| 25 | 
                + lens_hood_status = models.BooleanField(_(u'lens_hood_status'), default=False, help_text=u'遮光罩状态')  | 
            |
| 26 | 
                + tripod_ring_status = models.BooleanField(_(u'tripod_ring_status'), default=False, help_text=u'脚架环状态')  | 
            |
| 27 | 
                + appearance_performance_status = models.BooleanField(_(u'appearance_performance_status'), default=False, help_text=u'外观性能状态')  | 
            |
| 28 | 28 | 
                tenancy_status = models.IntegerField(_(u'tenancy_status'), choices=TENANCY_STATUS, default=0, help_text=u'租借状态')  | 
            
| 29 | 29 | 
                 | 
            
| 30 | 30 | 
                class Meta:  | 
            
                @@ -70,10 +70,20 @@ class TenancyShotRequestInfo(BaseModelMixin):  | 
            ||
| 70 | 70 | 
                )  | 
            
| 71 | 71 | 
                 | 
            
| 72 | 72 | 
                request_id = ShortUUIDField(_(u'request_id'), max_length=32, blank=True, null=True, help_text=u'申请唯一标识', db_index=True, unique=True)  | 
            
| 73 | 
                + admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'经手人唯一标识', db_index=True)  | 
            |
| 74 | 
                +  | 
            |
| 73 | 75 | 
                shot_id = models.CharField(_(u'shot_id'), max_length=32, blank=True, null=True, help_text=u'镜头唯一标识', db_index=True)  | 
            
| 76 | 
                + model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'镜头型号唯一标识', db_index=True)  | 
            |
| 74 | 77 | 
                 | 
            
| 75 | 78 | 
                user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)  | 
            
| 76 | 79 | 
                 | 
            
| 80 | 
                + #镜头配件信息  | 
            |
| 81 | 
                + front_cap_status = models.BooleanField(_(u'front_cap_status'), default=False, help_text=u'前盖状态')  | 
            |
| 82 | 
                + rear_cap_status = models.BooleanField(_(u'rear_cap_status'), default=False, help_text=u'后盖状态')  | 
            |
| 83 | 
                + lens_hood_status = models.BooleanField(_(u'lens_hood_status'), default=False, help_text=u'遮光罩状态')  | 
            |
| 84 | 
                + tripod_ring_status = models.BooleanField(_(u'tripod_ring_status'), default=False, help_text=u'脚架环状态')  | 
            |
| 85 | 
                + appearance_performance_status = models.BooleanField(_(u'appearance_performance_status'), default=False, help_text=u'外观性能状态')  | 
            |
| 86 | 
                +  | 
            |
| 77 | 87 | 
                # 身份证信息  | 
            
| 78 | 88 | 
                identity_card_number = models.CharField(_(u'identity_card_number'), max_length=32, blank=True, null=True, help_text=u'身份证号')  | 
            
| 79 | 89 | 
                identity_card_name = models.CharField(_(u'identity_card_name'), max_length=32, blank=True, null=True, help_text=u'身份证姓名')  | 
            
                @@ -132,6 +142,11 @@ class TenancyShotRequestInfo(BaseModelMixin):  | 
            ||
| 132 | 142 | 
                'request_id': self.request_id,  | 
            
| 133 | 143 | 
                'shot_id': self.shot_id,  | 
            
| 134 | 144 | 
                             'shot_info': shot.data if shot else {},
               | 
            
| 145 | 
                + 'front_cap_status': self.front_cap_status,  | 
            |
| 146 | 
                + 'rear_cap_status': self.rear_cap_status,  | 
            |
| 147 | 
                + 'lens_hood_status': self.lens_hood_status,  | 
            |
| 148 | 
                + 'tripod_ring_status': self.tripod_ring_status,  | 
            |
| 149 | 
                + 'appearance_performance_status': self.appearance_performance_status,  | 
            |
| 135 | 150 | 
                'user_id': self.user_id,  | 
            
| 136 | 151 | 
                'name': self.name,  | 
            
| 137 | 152 | 
                'phone': self.phone,  | 
            
                @@ -159,14 +174,26 @@ class TenancyShotRequestInfo(BaseModelMixin):  | 
            ||
| 159 | 174 | 
                @property  | 
            
| 160 | 175 | 
                def admindata(self):  | 
            
| 161 | 176 | 
                try:  | 
            
| 162 | 
                - shot = TenancyShotInfo.objects.get(shot_id=self.shot_id)  | 
            |
| 177 | 
                + admin = AdministratorInfo.objects.get(admin_=self.admin)  | 
            |
| 178 | 
                + except AdministratorInfo.DoesNotExist:  | 
            |
| 179 | 
                + admin = None  | 
            |
| 180 | 
                +  | 
            |
| 181 | 
                + try:  | 
            |
| 182 | 
                + shot = TenancyShotInfo.objects.get(shot_id=self.shot_id, status=True)  | 
            |
| 163 | 183 | 
                except TenancyShotInfo.DoesNotExist:  | 
            
| 164 | 184 | 
                shot = None  | 
            
| 185 | 
                +  | 
            |
| 186 | 
                + try:  | 
            |
| 187 | 
                + model = ModelInfo.objects.get(model_id=self.model_id, status=True)  | 
            |
| 188 | 
                + except ModelInfo.DoesNotExist:  | 
            |
| 189 | 
                + model = None  | 
            |
| 190 | 
                +  | 
            |
| 165 | 191 | 
                         return {
               | 
            
| 166 | 192 | 
                'req_id': self.request_id,  | 
            
| 167 | 193 | 
                'request_id': self.request_id,  | 
            
| 168 | 194 | 
                'shot_id': self.shot_id,  | 
            
| 169 | 195 | 
                             'shot_info': shot.data if shot else {},
               | 
            
| 196 | 
                + 'model_info': model.admindata,  | 
            |
| 170 | 197 | 
                'user_id': self.user_id,  | 
            
| 171 | 198 | 
                'name': self.name,  | 
            
| 172 | 199 | 
                'phone': self.phone,  | 
            
                @@ -189,4 +216,11 @@ class TenancyShotRequestInfo(BaseModelMixin):  | 
            ||
| 189 | 216 | 
                'request_status': self.request_status,  | 
            
| 190 | 217 | 
                             'request_status_at': {k: tc.local_string(utc_dt=tc.string_to_utc_datetime(v, format='%Y-%m-%dT%H:%M:%S.%fZ')) for k, v in self.request_status_at.items()},
               | 
            
| 191 | 218 | 
                'created_at': tc.local_string(utc_dt=self.created_at),  | 
            
| 219 | 
                + 'admin_id': self.admin_id,  | 
            |
| 220 | 
                +            'admin_data': admin.admindata if admin else {},
               | 
            |
| 221 | 
                + 'front_cap_status': self.front_cap_status,  | 
            |
| 222 | 
                + 'rear_cap_status': self.rear_cap_status,  | 
            |
| 223 | 
                + 'lens_hood_status': self.lens_hood_status,  | 
            |
| 224 | 
                + 'tripod_ring_status': self.tripod_ring_status,  | 
            |
| 225 | 
                + 'appearance_performance_status': self.appearance_performance_status,  | 
            |
| 192 | 226 | 
                }  |